#include <linux/module.h>
#include <linux/kernel.h>


static int __init helloworld_init(void)
{
    printk(KERN_EMERG "helloworld_init\r\n");
    // dump_stack();           //  打印内核调用堆栈，并打印函数的调用关系。
    // WARN_ON(1);                // 在括号中的条件成立时，内核会抛出栈回溯，打印函数的 调用关系。打印寄存器相关信息以及dump_stack信息
    BUG_ON(1);                      //内核就会立刻抛出oops，导致栈的 回溯和错误信息的打印，并且会造成终端死机。  
    // panic("!!!!!!!!!!!!!");     //打印输出函数的调用关系以及寄存器值，并且会造成终端死机！！！
    // 

    return 0;
}
static void __exit helloworld_exit(void)
{
    printk(KERN_EMERG "helloworld_exit\r\n");
}


module_init(helloworld_init);
module_exit(helloworld_exit);
MODULE_LICENSE("GPL v2");
MODULE_AUTHOR("Treasure1029");